From 534c09249e12a82ce97243813b37731d10ca4430 Mon Sep 17 00:00:00 2001 From: tsteven4 Date: Sun, 6 Dec 2015 15:39:52 -0700 Subject: [PATCH] fix bug in gpx reader when processing unrecognized elements. Any existing prefix on attribute names was erroneously dropped. --- gpx.cc | 2 +- reference/unknowntag.gpx | 21 +++++++++++++++++++++ reference/unknowntag~gpx.gpx | 25 +++++++++++++++++++++++++ testo.d/gpx.test | 5 +++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 reference/unknowntag.gpx create mode 100644 reference/unknowntag~gpx.gpx diff --git a/gpx.cc b/gpx.cc index 7e2560d1c..f08dafb74 100644 --- a/gpx.cc +++ b/gpx.cc @@ -549,7 +549,7 @@ start_something_else(const QString el, const QXmlStreamAttributes& attr) new_tag->attributes = (char**)xcalloc(sizeof(char*),2*(attr_count+ns_count)+1); avcp = new_tag->attributes; for (int i = 0; i < attr_count; i++) { - *avcp = xstrdup(attr[i].name().toString()); + *avcp = xstrdup(attr[i].qualifiedName().toString()); avcp++; *avcp = xstrdup(attr[i].value().toString()); avcp++; diff --git a/reference/unknowntag.gpx b/reference/unknowntag.gpx new file mode 100644 index 000000000..38c835f7f --- /dev/null +++ b/reference/unknowntag.gpx @@ -0,0 +1,21 @@ + + + + B02222 + + + false + + + + A01111 + A St/B St + Waypoint + + + 000000000000ffffffffffffffffffffffff + + + + + diff --git a/reference/unknowntag~gpx.gpx b/reference/unknowntag~gpx.gpx new file mode 100644 index 000000000..25920f43e --- /dev/null +++ b/reference/unknowntag~gpx.gpx @@ -0,0 +1,25 @@ + + + + + + + + B02222 + + + false + + + + A01111 + A St/B St + Waypoint + + + 000000000000ffffffffffffffffffffffff + + + + + diff --git a/testo.d/gpx.test b/testo.d/gpx.test index c9174de7f..70e7c327e 100644 --- a/testo.d/gpx.test +++ b/testo.d/gpx.test @@ -35,3 +35,8 @@ compare ${REFERENCE}/basecamp~gpx.gpx ${TMPDIR}/basecamp~gpx_so.gpx rm -f ${TMPDIR}/basecamp~gpx_si.gpx gpsbabel -i gpx -f - -o gpx -F ${TMPDIR}/basecamp~gpx_si.gpx 0< ${REFERENCE}/basecamp.gpx compare ${REFERENCE}/basecamp~gpx.gpx ${TMPDIR}/basecamp~gpx_si.gpx + +# test unknown tags +rm -f ${TMPDIR}/unknowntag.gpx +gpsbabel -i gpx -f ${REFERENCE}/unknowntag.gpx -o gpx -F ${TMPDIR}/unknowntag.gpx +compare ${REFERENCE}/unknowntag~gpx.gpx ${TMPDIR}/unknowntag.gpx -- 2.30.2